<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>escape</title>
<meta name="generator" content="DocBook XSL Stylesheets V1.75.1">
<link rel="home" href="index.html" title="Руководство по Smarty">
<link rel="up" href="language.modifiers.html" title="Chapter 5. Модификаторы переменных">
<link rel="prev" href="language.modifier.default.html" title="default">
<link rel="next" href="language.modifier.indent.html" title="indent">
</head>
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
<div class="navheader">
<table width="100%" summary="Navigation header">
<tr><th colspan="3" align="center">escape</th></tr>
<tr>
<td width="20%" align="left">
<a accesskey="p" href="language.modifier.default.html">Prev</a> </td>
<th width="60%" align="center">Chapter 5. Модификаторы переменных</th>
<td width="20%" align="right"> <a accesskey="n" href="language.modifier.indent.html">Next</a>
</td>
</tr>
</table>
<hr>
</div>
<div class="sect1" title="escape">
<div class="titlepage"><div><div><h2 class="title" style="clear: both">
<a name="language.modifier.escape"></a>escape</h2></div></div></div>
<p>
    Используется для кодирования / экранирования спецсимволов по алгоритмам
    экранирования HTML, URL'ов, одиночных кавычек, hex-экранирования,
    hex-сущностей, javascript и экранирования почтовых адресов.
    По умолчанию активирован режим экранирования HTML.
  </p>
<div class="informaltable"><table border="1">
<colgroup>
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col align="center">
<col>
</colgroup>
<thead><tr>
<th align="center">Позиция параметра</th>
<th align="center">Тип</th>
<th align="center">Обязателен</th>
<th align="center">Possible Values</th>
<th align="center">По умолчанию</th>
<th>Описание</th>
</tr></thead>
<tbody>
<tr>
<td align="center">1</td>
<td align="center">string</td>
<td align="center">Нет</td>
<td align="center">
<code class="literal">html</code>,<code class="literal">htmlall</code>,<code class="literal">url</code>,<code class="literal">urlpathinfo</code>,<code class="literal">quotes</code>,<code class="literal">hex</code>,<code class="literal">hexentity</code>,<code class="literal">javascript</code>,<code class="literal">mail</code>
</td>
<td align="center"><code class="literal">html</code></td>
<td>формат экранирования</td>
</tr>
<tr>
<td align="center">2</td>
<td align="center">string</td>
<td align="center">Нет</td>
<td align="center">
<code class="literal">ISO-8859-1</code>, <code class="literal">UTF-8</code>, ... любая кодировка, поддерживаемая функцией <a class="ulink" href="http://php.net/htmlentities" target="_top">htmlentities()</a>
</td>
<td align="center"><code class="literal">ISO-8859-1</code></td>
<td>Кодировка для экранирования, передаваемая в htmlentities() и т.д.</td>
</tr>
</tbody>
</table></div>
<div class="example">
<a name="id2657241"></a><p class="title"><b>Example 5.10. escape</b></p>
<div class="example-contents">
<pre class="programlisting">

&lt;?php
    
$smarty-&gt;assign('articleTitle',
                "'Stiff Opposition Expected to Casketless Funeral Plan'"
                );
$smarty-&gt;assign('EmailAddress','smarty@example.com');
?&gt;

   </pre>
<p>
    Шаблон:
   </p>
<pre class="programlisting">

{$articleTitle}
{$articleTitle|escape}
{$articleTitle|escape:'html'}    {* экранирует  &amp; " ' &lt; &gt; *}
{$articleTitle|escape:'htmlall'} {* экранирует ВСЕ HTML-сущности *}
{$articleTitle|escape:'url'}
{$articleTitle|escape:'quotes'}
&lt;a href="mailto:{$EmailAddress|escape:"hex"}"&gt;{$EmailAddress|escape:"hexentity"}&lt;/a&gt;
{$EmailAddress|escape:'mail'}    {* конвертирует e-mail в текст *}
{'mail@example.com'|escape:'mail'}

   </pre>
<p>
    Результат обработки:
   </p>
<pre class="screen">

'Stiff Opposition Expected to Casketless Funeral Plan'
&amp;#039;Stiff Opposition Expected to Casketless Funeral Plan&amp;#039;
&amp;#039;Stiff Opposition Expected to Casketless Funeral Plan&amp;#039;
&amp;#039;Stiff Opposition Expected to Casketless Funeral Plan&amp;#039;
%27Stiff+Opposition+Expected+to+Casketless+Funeral+Plan%27
\'Stiff Opposition Expected to Casketless Funeral Plan\'
&lt;a href="mailto:%62%6f%..snip..%65%74"&gt;&amp;#x62;&amp;#x6f;&amp;#x62..snip..&amp;#x65;&amp;#x74;&lt;/a&gt;
smarty [AT] example [DOT] com
mail [AT] example [DOT] com

   </pre>
<p>
    Обратите внимание, что родные функции PHP могут использоваться в качестве
    модификаторов, так что следующие приёмы сработают
   </p>
<pre class="screen">

{* GET-переменная rewind передает текущий адрес *}
&lt;a href="{$SCRIPT_NAME}?page=foo&amp;rewind={$smarty.server.REQUEST_URI|urlencode}"&gt;click here&lt;/a&gt;
 
   </pre>
<p>
    Это очень полезно для e-mail'ов, но см. также
    <a class="link" href="language.function.mailto.html" title="{mailto}">{mailto}</a>
   </p>
<pre class="screen">

{* email address mangled *}
&lt;a href="mailto:{$EmailAddress|escape:'hex'}"&gt;{$EmailAddress|escape:'mail'}&lt;/a&gt;

   </pre>
</div>
</div>
<br class="example-break"><p>
   См. также
   <a class="link" href="language.escaping.html" title="Предотвращение обработки Smarty">Предотвращение обработки Smarty</a>,
   <a class="link" href="language.function.mailto.html" title="{mailto}">{mailto}</a>
   и
   <a class="link" href="tips.obfuscating.email.html" title="Сокрытие E-mail адреса">Сокрытие E-mail адреса</a>.
  </p>
</div>
<div class="navfooter">
<hr>
<table width="100%" summary="Navigation footer">
<tr>
<td width="40%" align="left">
<a accesskey="p" href="language.modifier.default.html">Prev</a> </td>
<td width="20%" align="center"><a accesskey="u" href="language.modifiers.html">Up</a></td>
<td width="40%" align="right"> <a accesskey="n" href="language.modifier.indent.html">Next</a>
</td>
</tr>
<tr>
<td width="40%" align="left" valign="top">default </td>
<td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td>
<td width="40%" align="right" valign="top"> indent</td>
</tr>
</table>
</div>
</body>
</html>
